#pragma once 
#include "Common.h"
#include "SingleControlPointObject.h"
#include <glm\glm.hpp>
#include <string>

class SceneManager;

class EXPORT Camera : public SingleControlPointObject
{
	std::string name;
	glm::vec3 lookDirection;
	float fov;
	float aspectRatio;
	float nearPlaneDistance;
	float farPlaneDistance;

	friend class SceneManager;
	Camera(std::string camName);
public:

	


	void LookAt(float x,float y,float z);
	void LookAt(glm::vec3 dir);

	glm::mat4 GenerateViewMatrix();
	glm::mat4 GenerateProjMatrix();

	void SetFOV(float fov);
	float GetFOV();

	void SetAspectRatio(float aspect);
	float GetAspectRatio();

	void SetNearPlaneDistance(float near);
	float GetNearPlaneDistance();

	void SetFarPlaneDistance(float far);
	float GetFarPlaneDistance();
	
	void SetName(std::string name);
	std::string GetName();
};